// 练习3：使用帮助函数_average重构averageDollarValue,使用函数组合的方式实现
const fp = require("lodash/fp");
// horsepower 马力
// dollar_value 价格
// in_stock

const cars = [
  {
    name: "Ferrari FF",
    horsepower: 60,
    dollar_value: 700000,
    in_stock: true,
  },
  {
    name: "Spyker C12 Zagato",
    horsepower: 650,
    dollar_value: 648000,
    in_stock: false,
  },
  {
    name: "Jaguar XKR-s",
    horsepower: 550,
    dollar_value: 132000,
    in_stock: false,
  },
  {
    name: "Audi R8",
    horsepower: 525,
    dollar_value: 114200,
    in_stock: false,
  },
  {
    name: "Aston Martin One-77",
    horsepower: 750,
    dollar_value: 1850000,
    in_stock: true,
  },
  {
    name: "Pagani Huayra",
    horsepower: 700,
    dollar_value: 1300000,
    in_stock: false,
  },
];

let _average = function (xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length;
}; // 无需改动

let averageDollarValue = function (cars) {
  let dollar_values = fp.map(function (car) {
    return car.dollar_value;
  }, cars);
  return _average(dollar_values);
};

console.log('oldFunctionOutput:', averageDollarValue(cars));

//实现
const getCarDollarValue = (array) => fp.map((car) => car.dollar_value, array);
const getAllDollarValueAverage = fp.flowRight(_average, getCarDollarValue);
console.log('newFunctionOutput:', getAllDollarValueAverage(cars));
